/**
 * Copyright (c) 2016-2020, Michael Yang 杨福海 (fuhai999@gmail.com).
 * <p>
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl-3.0.txt
 * <p>
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
package cn.hg.jboot.commons.mail;

import com.jfinal.kit.JsonKit;
import com.jfinal.log.Log;

/**
 * @author Michael Yang 杨福海 （fuhai999@gmail.com）
 * @version V1.0
 * @Package io.jpress.commons.email
 */

public class Email {

    private static final Log LOG = Log.getLog(Email.class);

    public static Email create() {
        return new Email();
    }

    private String[] to = null;
    private String[] cc = null;
    private String subject = null;

    private String content = null;

    public Email cc(String... ccEmails) {
        this.cc = ccEmails;
        return this;
    }

    public Email content(String content) {
        this.content = content;
        return this;
    }

    public String[] getCc() {
        return this.cc;
    }

    public String getContent() {
        return this.content;
    }

    public String getSubject() {
        return this.subject;
    }

    public String[] getTo() {
        return this.to;
    }

    public boolean send(EmailSender sender) {
        try {
            return sender.send(this);
        } catch (Throwable ex) {
            LOG.error(ex.toString(), ex);
            return false;
        }
    }

    public Email subject(String subject) {
        this.subject = subject;
        return this;
    }

    public Email to(String... toEmails) {
        this.to = toEmails;
        return this;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return JsonKit.toJson(this);
    }

}
